package bean;
import java.util.Date;
import java.util.List;

import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.bean.*;
import javax.faces.context.FacesContext;

import controller.PersonaleInterface;
import controller.UserMgr;
import dto.*;

@ManagedBean
@ViewScoped
public class AcquistoBean {
	@EJB
	private PersonaleInterface personal;
	@EJB
	private UserMgr userMgr;
	
    private ElementoBaseDTO selectedElemento;
	private PacchettoPersonaleDTO selectedPacchetto;
	private PacchettoPredefinitoDTO selectedPrePacchetto;
	public ElementoBaseDTO getSelectedElemento() {
		return selectedElemento;
	}
	public void setSelectedElemento(ElementoBaseDTO selectedElemento) {
		this.selectedElemento = selectedElemento;
	}
	public PacchettoPersonaleDTO getSelectedPacchetto() {
		return selectedPacchetto;
	}
	public void setSelectedPacchetto(PacchettoPersonaleDTO selectedPacchetto) {
		this.selectedPacchetto = selectedPacchetto;
	}
	public PacchettoPredefinitoDTO getSelectedPrePacchetto() {
		return selectedPrePacchetto;
	}
	public void setSelectedPrePacchetto(PacchettoPredefinitoDTO selectedPrePacchetto) {
		this.selectedPrePacchetto = selectedPrePacchetto;
	}
	
	public void pagaPacchettoPredefinito(PacchettoPredefinitoDTO p){
		UtenteDTO usr = userMgr.getUtenteDTO();
		List<AcquistoDTO> list = usr.getAcquisto();
		AcquistoDTO a = new AcquistoDTO();
		a.setData(new Date());
		a.setNome(p.getNome());
		a.setDescrizione("Acquisto del pacchetto "+p.getNome());
		a.setTotale(p.getTotale());
		list.add(a);
		usr.setAcquisto(list);
		this.userMgr.update(usr);		
	    FacesContext facesContext = FacesContext.getCurrentInstance();  
	    facesContext.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Pacchetto acquistato:", p.getNome()));
	
	}
	
	public void pagaPacchettoPersonale(PacchettoPersonaleDTO p){
		UtenteDTO usr = userMgr.getUtenteDTO();
		List<AcquistoDTO> list = usr.getAcquisto();
		AcquistoDTO a = new AcquistoDTO();
		a.setData(new Date());
		a.setNome(p.getNome());
		a.setDescrizione("Acquisto del pacchetto "+p.getNome());
		a.setTotale(p.getTotale());
		list.add(a);
		usr.setAcquisto(list);
		this.userMgr.update(usr);		
	    FacesContext facesContext = FacesContext.getCurrentInstance();  
	    facesContext.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Pacchetto Acquistato:", p.getNome()));
	}
	
	public void pagaGiftList(ElementoBaseDTO e){
		UtenteDTO usr = userMgr.getUtenteDTO();
		List<AcquistoDTO> list = usr.getAcquisto();
		AcquistoDTO a = new AcquistoDTO();
		a.setData(new Date());
		a.setNome(e.getNome());
		a.setDescrizione("Acquisto dell'elemento "+e.getNome());
		a.setTotale(e.getPrezzo());
		list.add(a);
		usr.setAcquisto(list);
		this.userMgr.update(usr);	
	    FacesContext facesContext = FacesContext.getCurrentInstance();  
	    facesContext.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Elemento Acquistato:", e.getNome()));		
	}

	public void pagaGiftListAmico(String email,ElementoBaseDTO e){
		
		UtenteDTO my = userMgr.getUtenteDTO();
		//Aggiorno l'amico
		UtenteDTO usr = userMgr.getUtenteEmail(email);
		List<AcquistoDTO> list = usr.getAcquisto();
		AcquistoDTO a = new AcquistoDTO();
		a.setData(new Date());
		a.setNome(e.getNome());
		a.setDescrizione("Hai ricevuto in regalo "+e.getNome()+" dall'utente "+my.getEmail());
		a.setTotale(e.getPrezzo());
		list.add(a);
		usr.setAcquisto(list);
		this.userMgr.update(usr);
		//Aggiorno l'utente attuale

		List<AcquistoDTO> listm = my.getAcquisto();
		AcquistoDTO am = new AcquistoDTO();
		am.setData(new Date());
		am.setNome(e.getNome());
		am.setDescrizione("Hai regalato "+e.getNome()+" all'utente "+usr.getEmail());
		am.setTotale(e.getPrezzo());
		listm.add(am);
		my.setAcquisto(listm);
		this.userMgr.update(my);
		
	    FacesContext facesContext = FacesContext.getCurrentInstance();  
	    facesContext.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Elemento regalato:", e.getNome()));		
	}
	
	public void pagaRicerca(ElementoBaseDTO e){
		UtenteDTO usr = userMgr.getUtenteDTO();
		List<AcquistoDTO> list = usr.getAcquisto();
		AcquistoDTO a = new AcquistoDTO();
		a.setData(new Date());
		a.setNome(e.getNome());
		a.setDescrizione("Acquisto dell'elemento "+e.getNome());
		a.setTotale(e.getPrezzo());
		list.add(a);
		usr.setAcquisto(list);
		this.userMgr.update(usr);	
	    FacesContext facesContext = FacesContext.getCurrentInstance();  
	    facesContext.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Elemento Acquistato:", e.getNome()));
		
	}

}
